package com.study;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.concurrent.CompletableFuture;

/**
 * @Name: Test
 * @Description: java类作用描述
 * @Author: yn
 * @CreateDate: 2023/2/9 16:34
 * @Remark: 特殊说明
 * @Version: 1.0
 */
public class Test {

	public static void main(String[] args) {
		int size=10;
		JSONArray jsonArray = creteJSONArray(size);
		List<CompletableFuture<Void>> e = new ArrayList<>();
		for (int i = 0; i < jsonArray.size(); i++) {
			JSONObject data = jsonArray.getJSONObject(i);
			e.add(CompletableFuture.runAsync(() -> {
				if(Objects.equals(data.getLong("id")%2,0L)){
					data.clear();
				}
				System.out.println(data);
			}));

		}
		CompletableFuture.allOf(e.toArray(new CompletableFuture[jsonArray.size()])).join();
		for (int i = 0; i < jsonArray.size(); i++) {
			System.out.println(jsonArray.getJSONObject(i).get("id"));
		}
	}

	private static JSONArray creteJSONArray(int size) {
		JSONArray jsonArray = new JSONArray();
		for (int i = 0; i < size; i++) {
			JSONObject jsonObject = new JSONObject();
			jsonObject.put("id",i);
			jsonObject.put("type",i+1000);
			jsonArray.add(jsonObject);
		}
		return jsonArray;
	}
//	public static void main(String[] args) {
//		String fileContent = FileUtil.readString("C:\\Users\\yn\\Desktop\\dpm数据包测试\\xxx型号生产计划任务通知单DPM导出\\json.json", StandardCharsets.UTF_8);
//		JSONArray jsonObject= JSONObject.parseArray(fileContent);
//
//		for (int i = 0; i < jsonObject.size(); i++) {
//			System.out.println(jsonObject.getJSONObject(i).getString("data_id"));
//		}
//	}

//	private static List<String> ignore=Arrays.asList("metadata","preferences","teams","org","lov");
//	public static void main(String[] args) {
//		String fileContent = FileUtil.readString("C:\\Users\\yn\\Desktop\\dpm数据包测试\\021001002RW\\1675991833075.json", StandardCharsets.UTF_8);
//		JSONObject jsonObject= JSONObject.parseObject(fileContent);
//
//		JSONObject allData = jsonObject.getJSONObject("data");
//
//		JSONArray types = allData.getJSONObject("metadata").getJSONArray("types");
//		Map<String, String> typeName = types.stream().collect(Collectors.toMap(i -> JSON.parseObject(JSON.toJSONString(i)).getString("id"), i -> JSON.parseObject(JSON.toJSONString(i)).getString("label_name")));
//
//		Map<String,DataObject> dataMap=new HashMap<>();
//		Set<String> keySet = allData.keySet();
//		for (String key : keySet) {
//			if (ignore.contains(key)) {
//				continue;
//			}
//			JSONArray jsonArray = allData.getJSONArray(key);
//			for (int i = 0; i < jsonArray.size(); i++) {
//				JSONObject data = jsonArray.getJSONObject(i);
//				String id = data.getString("id");
//				String type = data.getString("type");
//				String title = data.getString("title");
//				DataObject dataObject=new DataObject();
//				dataObject.setData(data);
//				dataObject.setId(id);
//				dataObject.setType(typeName.getOrDefault(type,""));
//				dataObject.setTitle(title);
//				JSONArray relations = data.getJSONArray("relations");
//				for (int j = 0; j < relations.size(); j++) {
//					JSONObject relation = relations.getJSONObject(j);
//					String relationId = relation.getString("id");
//					String child_id = relation.getString("child_id");
//					String child_type = relation.getString("child_type");
//					String relationType = relation.getString("type");
//					dataObject.addRelation(relationId,relationType,child_id,child_type);
//				}
//				dataMap.put(id+type,dataObject);
//			}
//		}
//
//		dataMap.values().forEach(item->{
//			for (DataObject.Relation relation : item.getRelations()) {
//				item.addChildren(dataMap.get(relation.getChildId()+relation.getChildType()));
//			}
//		});
//
//		System.out.println(JSON.toJSONString(dataMap.get("15957840783092858901583363874040139777"),SerializerFeature.QuoteFieldNames));
//	}

//	private static Character[] str=new Character[]{'A','B','C','D','E','F','G','H','J','K','L','M','N','P','Q','R','S','T','U','V','W','X','Y','Z'};
//	public static void main(String[] args) {
//		for (int i=0;i<24*24*24*3;i++){
//			String s=numberToSeq(i);
//			if(i%24==0){
//				System.out.println();
//			}
//			System.out.print(i+":"+s+"\t");
//		}
//	}
//	private static String numberToSeq(int index) {
//		StringBuilder sb=new StringBuilder(getCarry(index % 24));
//		while(index/24>0){
//			index/=24;
//			sb.insert(0,getCarry(--index%24));
//		}
//		return sb.toString();
//	}
//
//	public static String getCarry(int index){
//		if (index<0) {
//			return "";
//		}
//		return str[index]+"";
//	}
}
